package practicedemo67;

public class Test {
    public static void main(String[] args) {
        //创建对象(多态方式!!!!!!!!)
        Animal d = new Dog();
        Animal c = new Cat();

        //调用成员方法时：编译看左边，运行也看左边
        //编译看左边：在用javac命令编译代码时，会看左边父类中有没有这个变量，有的化就成功，没有的话就编译失败
        //运行看左边：在java命令运行代码的时候，实际获取的是左边父类成员变量的值
        System.out.println(d.name);
        System.out.println(c.name);

        //调用成员方法时：编译看左边，运行看右边
        //编译看左边：在用javac命令编译代码时，会看左边父类中有没有这个方法，有的化就成功，没有的话就编译失败
        //运行看左边：在java命令运行代码的时候，实际获取的是右边父类成员方法的值
        d.show();
        c.show();

    }
}

class Animal {
    String name = "动物";

    public void show() {
        System.out.println("Animal show方法");
    }
}

class Dog extends Animal {
    String name = "狗";

    @Override
    public void show() {
        System.out.println("Dog show方法");
    }
}

class Cat extends Animal {
    String name = "猫";

    @Override
    public void show() {
        System.out.println("Cat show方法");
    }
}